home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / OS / FWOSMisc / SLFileOp.cpp < prev    next >
Encoding:
Text File  |  1996-09-17  |  18.6 KB  |  609 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                SLFileOp.cpp
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "FWOS.hpp"
  11.  
  12. #ifndef SLFILEOP_H
  13. #include "SLFileOp.h"
  14. #endif
  15.  
  16. #ifndef SLODFSTR_K
  17. #include "SLODFStr.k"
  18. #endif
  19.  
  20. #ifndef FWCFMRES_H
  21. #include "FWCFMRes.h"
  22. #endif
  23.  
  24. #ifndef   FWRESACC_H
  25. #include "FWResAcc.h"
  26. #endif
  27.  
  28. #ifndef FWRESTYP_H
  29. #include "FWResTyp.h"
  30. #endif
  31.  
  32. // ----- Foundation Includes -----
  33.  
  34. #ifndef FWSOMENV_H
  35. #include "FWSOMEnv.h"
  36. #endif
  37.  
  38. #ifndef FWBNDSTR_H
  39. #include <FWBndStr.h>
  40. #endif
  41.  
  42. #ifndef FWMEMMGR_H
  43. #include <FWMemMgr.h>
  44. #endif
  45.  
  46. //----- Windows includes -----
  47.  
  48. #if defined(FW_BUILD_WIN) && !defined(__STDLIB_H)
  49. #include <stdlib.h>
  50. #endif
  51.  
  52. #if defined(FW_BUILD_WIN) && !defined(__WINDOWS_H)
  53. #include <windows.h>
  54. #endif
  55.  
  56. #if defined(FW_BUILD_WIN) && !defined(__COMMDLG_H)
  57. #include <commdlg.h>
  58. #endif
  59.  
  60. #if defined(FW_BUILD_WIN) && !defined(IO_H)
  61. #include "io.h"
  62. #endif
  63.  
  64. //----- Macintosh includes -----
  65.  
  66. // for DisposeRoutineDescriptor
  67. #if defined(FW_BUILD_MAC) && !defined(__MIXEDMODE__)
  68. #include <MixedMode.h>
  69. #endif
  70.  
  71. //========================================================================================
  72. //    Runtime Informations
  73. //========================================================================================
  74.  
  75. #ifdef FW_BUILD_MAC    
  76. #pragma segment fwosmisc
  77. #endif
  78.  
  79. //----------------------------------------------------------------------------------------
  80. // FW_ChooseFileToOpen
  81. //----------------------------------------------------------------------------------------
  82.  
  83. FW_OFileSpecification* SL_API FW_ChooseFileToOpen(FW_HOpenFileParameters openFileParam)
  84. {
  85.     FW_OFileSpecification* fileSpec = NULL;
  86.  
  87.     FW_TRY
  88.     {
  89. #ifdef FW_BUILD_MAC
  90.         StandardFileReply reply;
  91.     // pascal void StandardGetFile(FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, StandardFileReply *reply)
  92.         FileFilterUPP fileFilter = NewFileFilterProc(FW_OpenFileParameters_MacGetFilterProc(openFileParam));
  93.         ::StandardGetFile(fileFilter,
  94.                           FW_OpenFileParameters_MacCountTypes(openFileParam), 
  95.                           FW_OpenFileParameters_MacGetTypes(openFileParam), 
  96.                           &reply);
  97.         DisposeRoutineDescriptor((UniversalProcPtr)fileFilter);
  98.     
  99.         if (reply.sfGood)
  100.         {
  101.             FW_SOMEnvironment ev;
  102.     
  103.             fileSpec = new FW_OFileSpecification;
  104.             fileSpec->AssignFileSpec(ev, &reply.sfFile);
  105.         }
  106. #endif
  107.  
  108. #ifdef FW_BUILD_WIN
  109.         OPENFILENAME     ofn;
  110.         char            fullFileName[_MAX_PATH];
  111.             
  112.         ::memset(&ofn, 0, sizeof(OPENFILENAME));
  113.         
  114.         fullFileName[0] = 0;
  115.         
  116.         ofn.lStructSize        = sizeof(OPENFILENAME);
  117.         ofn.hwndOwner        = FW_OpenFileParameters_WinGetOwnerWindow(openFileParam);
  118.         ofn.lpstrFilter        = FW_OpenFileParameters_WinGetFilterString(openFileParam);
  119.         ofn.lpstrFile        = fullFileName;
  120.         ofn.nMaxFile        = _MAX_PATH;    // size of fullFileName buffer
  121.         ofn.Flags            = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
  122.         ofn.lpstrDefExt        = FW_OpenFileParameters_WinGetDefaultExt(openFileParam);
  123.         
  124.         if (::GetOpenFileName(&ofn))
  125.         {
  126.             FW_SOMEnvironment ev;
  127.             FW_CString255 name(fullFileName);
  128.     
  129.             fileSpec = new FW_OFileSpecification;
  130.             fileSpec->InitFromFileName(ev, name);
  131.         }
  132. #endif
  133.     } 
  134.     FW_CATCH_BEGIN 
  135.     FW_CATCH_EVERYTHING() 
  136.     { 
  137.         if (fileSpec != 0)
  138.         {
  139.             delete fileSpec; 
  140.             fileSpec = 0;
  141.         }
  142.     } 
  143.     FW_CATCH_END 
  144.  
  145.     return fileSpec;
  146. }
  147.  
  148. //----------------------------------------------------------------------------------------
  149. // FW_ChooseFileToSave
  150. //----------------------------------------------------------------------------------------
  151.  
  152. FW_OFileSpecification* SL_API FW_ChooseFileToSave(FW_HSaveFileParameters saveFileParam)
  153. {
  154.     FW_OFileSpecification* fileSpec = NULL;
  155.  
  156.     FW_TRY
  157.     {
  158. #ifdef FW_BUILD_MAC
  159.     // pascal void StandardPutFile(ConstStr255Param prompt, ConstStr255Param defaultName, StandardFileReply *reply)
  160.         FW_CString str;
  161.     
  162.         Str255 defaultName;
  163.         str = FW_SaveFileParameters_MacGetDefaultName(saveFileParam);
  164.         str.ExportPascal(defaultName);
  165.  
  166.         Str255 savePrompt;
  167.         str = FW_SaveFileParameters_MacGetSavePrompt(saveFileParam);
  168.         str.ExportPascal(savePrompt);
  169.  
  170.         StandardFileReply reply;
  171.         ::StandardPutFile(savePrompt, defaultName, &reply);
  172.         if (reply.sfGood)
  173.         {
  174.             FW_SOMEnvironment ev;
  175.     
  176.             fileSpec = new FW_OFileSpecification;
  177.             fileSpec->AssignFileSpec(ev, &reply.sfFile);
  178.         }
  179. #endif
  180.  
  181. #ifdef FW_BUILD_WIN
  182.         OPENFILENAME     ofn;        
  183.         ::memset(&ofn, 0, sizeof(OPENFILENAME));
  184.         
  185.         ofn.lStructSize        = sizeof(OPENFILENAME);
  186.         ofn.hwndOwner        = FW_SaveFileParameters_WinGetOwnerWindow(saveFileParam);
  187.         ofn.lpstrFilter        = FW_SaveFileParameters_WinGetFilterString(saveFileParam);
  188.         ofn.lpstrFile        = FW_SaveFileParameters_WinGetDefaultName(saveFileParam);
  189.         ofn.nMaxFile        = _MAX_PATH;
  190.         ofn.lpstrDefExt        = FW_SaveFileParameters_WinGetDefaultExt(saveFileParam);
  191.         ofn.Flags            = OFN_OVERWRITEPROMPT;
  192.         
  193.         if (::GetSaveFileName(&ofn))
  194.         {
  195.             FW_SOMEnvironment ev;
  196.             FW_CString255 fileName(FW_SaveFileParameters_WinGetDefaultName(saveFileParam));
  197.     
  198.             fileSpec = new FW_OFileSpecification;
  199.             fileSpec->InitFromFileName(ev, fileName);
  200.         }
  201. #endif
  202.     } 
  203.     FW_CATCH_BEGIN 
  204.     FW_CATCH_EVERYTHING() 
  205.     { 
  206.         if (fileSpec != 0)
  207.         {
  208.             delete fileSpec; 
  209.             fileSpec = 0;
  210.         }
  211.     } 
  212.     FW_CATCH_END 
  213.  
  214.     return fileSpec;
  215. }
  216.  
  217. //----------------------------------------------------------------------------------------
  218. //    FW_OpenFileParameters_Construct
  219. //----------------------------------------------------------------------------------------
  220.  
  221. FW_PlatformError SL_API FW_OpenFileParameters_Construct(FW_HOpenFileParameters parameters)
  222. {
  223. #ifdef FW_BUILD_MAC
  224.     parameters->fNumTypes = -1;
  225.     parameters->fFileFilterProc = NULL;
  226. #endif
  227. #ifdef FW_BUILD_WIN
  228.     parameters->fOwnerWindow = NULL;
  229.     parameters->fFilterString = NULL;
  230.     parameters->fDefaultExt[0] = 0;
  231. #endif
  232.     parameters->fReserved = NULL;
  233.  
  234.     return FW_xNoError;
  235. }
  236.  
  237. //----------------------------------------------------------------------------------------
  238. //    FW_OpenFileParameters_Destruct
  239. //----------------------------------------------------------------------------------------
  240.  
  241. FW_PlatformError SL_API FW_OpenFileParameters_Destruct(FW_HOpenFileParameters parameters)
  242. {
  243. FW_UNUSED(parameters);
  244. #ifdef FW_BUILD_WIN
  245.     if (parameters->fFilterString)
  246.         FW_CMemoryManager::FreeBlock(parameters->fFilterString);
  247. #endif
  248.     return FW_xNoError;
  249. }
  250.  
  251. #ifdef FW_BUILD_MAC
  252. //----------------------------------------------------------------------------------------
  253. //    FW_OpenFileParameters_MacSet
  254. //----------------------------------------------------------------------------------------
  255.  
  256. FW_PlatformError SL_API FW_OpenFileParameters_MacSet(FW_HOpenFileParameters parameters, 
  257.                                               short numTypes,
  258.                                               OSType* fileType, 
  259.                                               FileFilterProcPtr fileFilterProc)
  260. {
  261.     FW_ASSERT(numTypes >= -1);
  262.     
  263.     parameters->fNumTypes = numTypes;
  264.     for (short i = 0; i<numTypes; i++)
  265.         parameters->fTypes[i] = fileType[i];
  266.     
  267.     parameters->fFileFilterProc = fileFilterProc;
  268.         
  269.     return FW_xNoError;
  270. }
  271. #endif
  272.  
  273. #ifdef FW_BUILD_WIN
  274. //----------------------------------------------------------------------------------------
  275. //    FW_OpenFileParameters_WinInit
  276. //----------------------------------------------------------------------------------------
  277.  
  278. FW_PlatformError SL_API FW_OpenFileParameters_WinInit(FW_HOpenFileParameters parameters, 
  279.                                                FW_HString filterString,
  280.                                                FW_HString defaultExt,
  281.                                                HWND ownerWindow)
  282. {
  283.     if (ownerWindow == NULL)
  284.         parameters->fOwnerWindow = NULL;
  285.     else
  286.         parameters->fOwnerWindow = ownerWindow; // [KVV] Temporary code! ->GetXMPWindow()->GetPlatformWindow();
  287.  
  288.     return FW_OpenFileParameters_WinSet(parameters, filterString, defaultExt);
  289. }
  290. #endif
  291.  
  292. #ifdef FW_BUILD_WIN
  293. //----------------------------------------------------------------------------------------
  294. //    FW_OpenFileParameters_WinSet
  295. //----------------------------------------------------------------------------------------
  296.  
  297. FW_PlatformError SL_API FW_OpenFileParameters_WinSet(FW_HOpenFileParameters parameters,
  298.                                               FW_HString filterStringParam, 
  299.                                               FW_HString defaultExtParam)
  300. {
  301.     FW_TRY
  302.     {
  303.         FW_CString filterString(filterStringParam);
  304.         FW_CString defaultExt(defaultExtParam);
  305.     
  306.         if (defaultExt.GetByteLength() < 4)
  307.             defaultExt.ExportCString(parameters->fDefaultExt);
  308.         
  309.         long length = filterString.GetByteLength();
  310.         if (length == 0)
  311.             return FW_xUnknownError;
  312.     
  313.         // Allocate memory to hold the filter strings
  314.         parameters->fFilterString = (char*)FW_CMemoryManager::AllocateBlock(length+1);    // add room for 0-terminator
  315.         filterString.ExportCString(parameters->fFilterString);
  316.         
  317.         char chReplace = parameters->fFilterString[length-1];    // final char should be "|" or other separator
  318.         // replace separator characters with 0's, dividing filter into individual strings
  319.         for (short i = 0; parameters->fFilterString[i] != '\0'; i++)
  320.                 if (parameters->fFilterString[i] == chReplace)
  321.                     parameters->fFilterString[i] = '\0';        
  322.     }
  323.     FW_CATCH_BEGIN
  324.     FW_CATCH_REFERENCE(FW_XException, exception) 
  325.     { 
  326.         return exception.GetPlatformError(); 
  327.     } 
  328.     FW_CATCH_EVERYTHING() 
  329.     { 
  330.         return FW_xUnknownError; 
  331.     } 
  332.     FW_CATCH_END
  333.     return FW_xNoError;
  334. }
  335. #endif
  336.  
  337. //----------------------------------------------------------------------------------------
  338. //    FW_SaveFileParameters_Construct
  339. //----------------------------------------------------------------------------------------
  340.  
  341. FW_PlatformError SL_API FW_SaveFileParameters_Construct(FW_HSaveFileParameters parameters)
  342. {
  343. #ifdef FW_BUILD_MAC
  344.     FW_TRY
  345.     {
  346.         // The default name and save prompt are FW_HStrings.  This idiom, courtesy of
  347.         // Jim Lloyd, acquires the FW_HString for the duration of our struct.
  348.         FW_SOMEnvironment ev;
  349.         FW_CString savePrompt;
  350.         FW_PSharedLibraryResourceFile resFile(ev);
  351.         ::FW_LoadStringByID(ev, resFile, FW_kODFStrings, FW_kMultiStringRes, FW_kSaveFileString, savePrompt);
  352.  
  353.         parameters->fSavePrompt = savePrompt;
  354.         FW_PrivString_Acquire(parameters->fSavePrompt);
  355.     
  356.         FW_CString defaultName("");
  357.         parameters->fDefaultName = defaultName;
  358.         FW_PrivString_Acquire(parameters->fDefaultName);
  359.     }
  360.     FW_CATCH_BEGIN
  361.     FW_CATCH_REFERENCE(FW_XException, exception) 
  362.     { 
  363.         return exception.GetPlatformError(); 
  364.     } 
  365.     FW_CATCH_EVERYTHING() 
  366.     { 
  367.         return FW_xUnknownError; 
  368.     } 
  369.     FW_CATCH_END
  370. #endif
  371. #ifdef FW_BUILD_WIN
  372.     parameters->fOwnerWindow = NULL;
  373.     parameters->fFilterString = NULL;
  374.     parameters->fDefaultExt[0] = 0;
  375.     parameters->fDefaultName = NULL;
  376. #endif
  377.     return FW_xNoError;
  378. }
  379.  
  380. //----------------------------------------------------------------------------------------
  381. //    FW_SaveFileParameters_Destruct
  382. //----------------------------------------------------------------------------------------
  383. FW_PlatformError SL_API FW_SaveFileParameters_Destruct(FW_HSaveFileParameters parameters)
  384. {
  385.     // No try block necessary - Do not throw
  386. #ifdef FW_BUILD_MAC
  387.     FW_PrivString_Release(parameters->fSavePrompt);
  388.     FW_PrivString_Release(parameters->fDefaultName);
  389. #endif
  390. #ifdef FW_BUILD_WIN
  391.     FW_CMemoryManager::FreeBlock(parameters->fFilterString);
  392.     FW_CMemoryManager::FreeBlock(parameters->fDefaultName);
  393. #endif
  394.     return FW_xNoError;
  395. }
  396.  
  397. #ifdef FW_BUILD_MAC
  398. //----------------------------------------------------------------------------------------
  399. //    FW_SaveFileParameters_MacInit
  400. //----------------------------------------------------------------------------------------
  401. FW_PlatformError SL_API FW_SaveFileParameters_MacInit(FW_HSaveFileParameters parameters,
  402.                                                FW_HString savePrompt,
  403.                                                FW_HString defaultName)
  404. {
  405.     // No try block necessary - Do not throw
  406.     FW_PrivString_Acquire(savePrompt);
  407.     FW_PrivString_Release(parameters->fSavePrompt);
  408.     parameters->fSavePrompt = savePrompt;
  409.  
  410.     FW_PrivString_Acquire(defaultName);
  411.     FW_PrivString_Release(parameters->fDefaultName);
  412.     parameters->fDefaultName = defaultName;
  413.     return FW_xNoError;
  414. }
  415. #endif
  416.  
  417. #ifdef FW_BUILD_WIN
  418. //----------------------------------------------------------------------------------------
  419. //    FW_SaveFileParameters_WinInit
  420. //----------------------------------------------------------------------------------------
  421. FW_PlatformError SL_API FW_SaveFileParameters_WinInit(FW_HSaveFileParameters parameters,
  422.                                                FW_HString filterString,
  423.                                                FW_HString defaultExt,
  424.                                                FW_HString defaultName,
  425.                                                HWND ownerWindow)
  426. {
  427.     if (ownerWindow == NULL)
  428.         parameters->fOwnerWindow = NULL;
  429.     else
  430.         parameters->fOwnerWindow = ownerWindow; // [KVV] Temporary code! ->GetXMPWindow()->GetPlatformWindow();
  431.  
  432.     return FW_SaveFileParameters_WinSet(parameters, filterString, defaultExt, defaultName);
  433. }
  434. #endif
  435.  
  436. #ifdef FW_BUILD_WIN
  437. //----------------------------------------------------------------------------------------
  438. //    FW_SaveFileParameters_WinSet
  439. //----------------------------------------------------------------------------------------
  440. FW_PlatformError SL_API FW_SaveFileParameters_WinSet(FW_HSaveFileParameters parameters,
  441.                                               FW_HString filterStringParam,
  442.                                               FW_HString defaultExtParam,
  443.                                               FW_HString defaultNameParam)
  444. {
  445.     FW_TRY
  446.     {
  447.         FW_CString filterString(filterStringParam);
  448.         FW_CString defaultExt(defaultExtParam);
  449.         FW_CString defaultName(defaultNameParam);
  450.  
  451.         if (defaultExt.GetByteLength() < 4)
  452.             defaultExt.ExportCString(parameters->fDefaultExt);
  453.     
  454.         // Allocate memory to hold the default name
  455.         long length = defaultName.GetByteLength();
  456.         parameters->fDefaultName = (char*)FW_CMemoryManager::AllocateBlock(length+1);    // add room for 0-terminator
  457.         defaultName.ExportCString(parameters->fDefaultName);
  458.     
  459.         // Allocate memory to hold the filter strings
  460.         length = filterString.GetByteLength();
  461.         parameters->fFilterString = (char*)FW_CMemoryManager::AllocateBlock(length+1);    // add room for 0-terminator
  462.         filterString.ExportCString(parameters->fFilterString);
  463.         
  464.         if (length != 0)
  465.         {
  466.             // Divide filter string into individual strings
  467.             char chReplace = parameters->fFilterString[length-1];            // final char should be "|" or other separator
  468.             for (short i = 0; parameters->fFilterString[i] != '\0'; i++)    // replace separator characters with 0's
  469.                     if (parameters->fFilterString[i] == chReplace)
  470.                         parameters->fFilterString[i] = '\0';
  471.         }        
  472.     }
  473.     FW_CATCH_BEGIN
  474.     FW_CATCH_REFERENCE(FW_XException, exception) 
  475.     { 
  476.         return exception.GetPlatformError(); 
  477.     } 
  478.     FW_CATCH_EVERYTHING() 
  479.     { 
  480.         return FW_xUnknownError; 
  481.     } 
  482.     FW_CATCH_END
  483.     return FW_xNoError;
  484. }
  485. #endif
  486.  
  487.  
  488. #ifdef FW_BUILD_MAC
  489. //----------------------------------------------------------------------------------------
  490. //    FW_OpenFileParameters_MacCountTypes
  491. //----------------------------------------------------------------------------------------
  492. short SL_API FW_OpenFileParameters_MacCountTypes(FW_HOpenFileParameters parameters)
  493. {
  494.     return parameters->fNumTypes;
  495. }
  496. #endif
  497.  
  498. #ifdef FW_BUILD_MAC
  499. //----------------------------------------------------------------------------------------
  500. //    FW_OpenFileParameters_MacGetFilterProc
  501. //----------------------------------------------------------------------------------------
  502. FileFilterProcPtr SL_API FW_OpenFileParameters_MacGetFilterProc(FW_HOpenFileParameters parameters)
  503. {
  504.     return parameters->fFileFilterProc;
  505. }
  506. #endif
  507.  
  508. #ifdef FW_BUILD_MAC
  509. //----------------------------------------------------------------------------------------
  510. //    FW_OpenFileParameters_MacGetTypes
  511. //----------------------------------------------------------------------------------------
  512. OSType* SL_API FW_OpenFileParameters_MacGetTypes(FW_HOpenFileParameters parameters)
  513. {
  514.     return parameters->fNumTypes == -1 ? NULL : parameters->fTypes;
  515. }
  516. #endif
  517.  
  518. #ifdef FW_BUILD_WIN
  519. //----------------------------------------------------------------------------------------
  520. //    FW_OpenFileParameters_WinGetFilterString
  521. //----------------------------------------------------------------------------------------
  522. char* SL_API FW_OpenFileParameters_WinGetFilterString(FW_HOpenFileParameters parameters)
  523. {
  524.     return parameters->fFilterString;
  525. }
  526. #endif
  527.  
  528. #ifdef FW_BUILD_WIN
  529. //----------------------------------------------------------------------------------------
  530. //    FW_OpenFileParameters_WinGetDefaultExt
  531. //----------------------------------------------------------------------------------------
  532. char* SL_API FW_OpenFileParameters_WinGetDefaultExt(FW_HOpenFileParameters parameters)
  533. {
  534.     return parameters->fDefaultExt;
  535. }
  536. #endif
  537.  
  538. #ifdef FW_BUILD_WIN
  539. //----------------------------------------------------------------------------------------
  540. //    FW_OpenFileParameters_WinGetOwnerWindow
  541. //----------------------------------------------------------------------------------------
  542. HWND SL_API FW_OpenFileParameters_WinGetOwnerWindow(FW_HOpenFileParameters parameters)
  543. {
  544.     return parameters->fOwnerWindow;
  545. }
  546. #endif
  547.  
  548. #ifdef FW_BUILD_MAC
  549. //----------------------------------------------------------------------------------------
  550. //    FW_SaveFileParameters_MacGetSavePrompt
  551. //----------------------------------------------------------------------------------------
  552. FW_HString SL_API FW_SaveFileParameters_MacGetSavePrompt(FW_HSaveFileParameters parameters)
  553. {
  554.     // No try block necessary - Do not throw
  555.     return parameters->fSavePrompt;
  556. }
  557. #endif
  558.  
  559. #ifdef FW_BUILD_MAC
  560. //----------------------------------------------------------------------------------------
  561. //    FW_SaveFileParameters_MacGetDefaultName
  562. //----------------------------------------------------------------------------------------
  563. FW_HString SL_API FW_SaveFileParameters_MacGetDefaultName(FW_HSaveFileParameters parameters)
  564. {
  565.     // No try block necessary - Do not throw
  566.     return parameters->fDefaultName;
  567. }
  568. #endif
  569.  
  570. #ifdef FW_BUILD_WIN
  571. //----------------------------------------------------------------------------------------
  572. //    FW_SaveFileParameters_WinGetFilterString
  573. //----------------------------------------------------------------------------------------
  574. char* SL_API FW_SaveFileParameters_WinGetFilterString(FW_HSaveFileParameters parameters)
  575. {
  576.     return parameters->fFilterString;
  577. }
  578. #endif
  579.  
  580. #ifdef FW_BUILD_WIN
  581. //----------------------------------------------------------------------------------------
  582. //    FW_SaveFileParameters_WinGetDefaultExt
  583. //----------------------------------------------------------------------------------------
  584. char* SL_API FW_SaveFileParameters_WinGetDefaultExt(FW_HSaveFileParameters parameters)
  585. {
  586.     return parameters->fDefaultExt;
  587. }
  588. #endif
  589.  
  590. #ifdef FW_BUILD_WIN
  591. //----------------------------------------------------------------------------------------
  592. //    FW_SaveFileParameters_WinGetDefaultName
  593. //----------------------------------------------------------------------------------------
  594. char* SL_API FW_SaveFileParameters_WinGetDefaultName(FW_HSaveFileParameters parameters)
  595. {
  596.     return parameters->fDefaultName;
  597. }
  598. #endif
  599.  
  600. #ifdef FW_BUILD_WIN
  601. //----------------------------------------------------------------------------------------
  602. //    FW_SaveFileParameters_WinGetOwnerWindow
  603. //----------------------------------------------------------------------------------------
  604. HWND SL_API FW_SaveFileParameters_WinGetOwnerWindow(FW_HSaveFileParameters parameters)
  605. {
  606.     return parameters->fOwnerWindow;
  607. }
  608. #endif
  609.